iT邦幫忙

2023 iThome 鐵人賽

DAY 15
0
自我挑戰組

全端網頁-入職三十天學習筆記系列 第 15

【全端網頁開發】Day15-PostgreSQL-實作應用sqlalchemy撰寫查詢

  • 分享至 

  • xImage
  •  

前言

來到Day15過一半了,覺得這半個月真的吸收了滿多新的內容,
那這次也是要以PostgreSQL應用在flask方式,
但這次練習的是用sqpalchemy套件來實作,
那以下開始~

sqpalchemy

SQLAlchemy 是一個Python的資料庫工具和物件關聯映射(ORM)庫,
它允許開發者使用Python程式碼來操作關聯式資料庫。
SQLAlchemy 提供了高度靈活的資料庫操作和查詢功能,同時支援多種資料庫系統,
是開發Python應用程式時的強大工具。

實作應用sqlalchemy撰寫PostgreSQL查詢

1.將資料庫表格的結構定義寫在models分開,增加管理性

models.py

from sqlalchemy import Column, Integer, String, ForeignKey
from sqlalchemy.orm import relationship
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class ***1(Base):
    __tablename__ = '***'
    id = Column(Integer, primary_key=True)
    date = Column(String)
    project_id = Column(Integer)

class ***2(Base):
    __tablename__ = '***'
    id = Column(Integer, primary_key=True)
    logdate = Column(String)
    filename = Column(String)
    width = Column(Integer)
    height = Column(Integer)
    date = Column(Integer, ForeignKey('***.id'))
    *** = relationship('***', backref='***')

2.在views_sql.py把連線資訊設定寫好,創建一個 Session類別的實例
sql.py

from flask import Flask, request, jsonify,Blueprint
from sqlalchemy import create_engine, Column, Integer, String, ForeignKey
from sqlalchemy.orm import sessionmaker, relationship
from sqlalchemy.ext.declarative import declarative_base
from models import {剛剛建立的class名稱***1}, {剛剛建立的class名稱***2}  # 匯入模型類別

sql = Blueprint('sql', __name__)

# PostgreSQL 連接信息
db_host = '***'
db_port = '***'
db_user = '***'
db_password = '***'
db_name = '***'

# 創建 SQLAlchemy 引擎
db_url = f"postgresql://{db_user}:{db_password}@{db_host}:{db_port}/{db_name}"
engine = create_engine(db_url)

# 定義 ORM 映射
Base = declarative_base()

# 創建一個 Session 類型以進行數據庫交互
Session = sessionmaker(bind=engine)

3.撰寫sql路由,用request方式接查詢條件,用session.query方式撰寫sql查詢,最後關閉
並將查詢結果轉換為 JSON 格式return
sql.py

@sql.route('/query', methods=['GET'])
def query_data():
    date = request.args.get('date')
    project_id = request.args.get('project_id')
    logdate = request.args.get('logdate')

    # 創建一個會話對象
    session = Session()

    # 執行查詢
    query_result = session.query(***.logdate, ***.filename, ***.width, ***.height) \
        .join(***.***) \
        .filter(***.date == date, ***.project_id == project_id, ***.logdate == logdate) \
        .limit(500).all()

    # 關閉
    session.close()

    # 將查詢結果轉換為 JSON 格式
    result = [{'logdate': row.logdate, 'filename': row.filename, 'width': row.width, 'height': row.height} for row in query_result]

    return jsonify(result)

結語

本篇文章介紹了如何使用 SQLAlchemy 和 Flask 來建立一個強大的資料庫查詢應用程式,
並以 PostgreSQL 為例進行實作。SQLAlchemy 是一個功能強大的 Python ORM 庫,
它允許開發者使用 Python 程式碼來操作關聯式資料庫,
同時提供了高度靈活的資料庫操作和查詢功能,使資料庫操作變得更加簡單和可管理。


上一篇
【全端網頁開發】Day14-PostgreSQL應用於flask網頁
下一篇
【全端網頁開發】Day16-製作USB安裝Ubuntu將windows改成Linux系統
系列文
全端網頁-入職三十天學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言